package com.changgou.file.controller;

import com.changgou.entity.Result;
import com.changgou.entity.StatusCode;
import com.changgou.file.util.FastDFSClient;
import com.changgou.file.util.FastDFSFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @author xgm
 * @date 2020/12/10
 */
@RestController
@RequestMapping("/file")
public class FileController {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @PostMapping
    public Result upload(@RequestParam("file") MultipartFile file){
        try {
            String fileName = file.getOriginalFilename();
            String extName = fileName.substring(fileName.lastIndexOf("."));
            byte[] fileContext = file.getBytes();   //获取条件内容

            //构建一个FastDFSFile对象
            FastDFSFile fastDFSFile = new FastDFSFile(fileName, fileContext, extName);
            String[] uploadResult = FastDFSClient.upload(fastDFSFile);

            if (uploadResult != null&&uploadResult.length==2 ){
                String groupName = uploadResult[0];     //获取文件组名
                String remoteFilePath = uploadResult[1];    //
                //TODO 将路径存储到数据库表中

                String url = FastDFSClient.getTrackerUrl() + groupName + remoteFilePath;
                logger.info("上传成功，url:{}",url);
                return new Result(true, StatusCode.OK,"文件上传成功",url);
            }else {
                logger.info("上传失败，fileName:{}",fileName);
                return new Result(false,StatusCode.ERROR,"上传失败");

            }

        } catch (IOException e) {
            e.printStackTrace();
            return new Result(false,StatusCode.ERROR,"上传失败");
        }
    }
}
